写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务:
- 使用一下形式:getinterface.sh [-i interface | -I ip]
- 当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项时,显示其指定ip所属的网卡。
例:
1 2
| sh getinterface.sh -i eth0 sh getinterface.sh -I 192.168.0.1
|
- 当用户使用除[-i | -I]选项时,显示[-i interface | -I ip]此信息。
- 当用户指定信息不符合时,显示错误。(比如指定的eth0没有,而是eth1时)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #!/bin/bash ip add |awk -F ":" '$1 ~ /^[1-9]/ {print $2}'|sed 's/ //g' > /tmp/eths.txt [ -f /tmp/eth_ip.log ] && rm -f /tmp/eth_ip.log for eth in `cat /tmp/eths.txt` do ip=`ip add |grep -A2 ": $eth" |grep inet |awk '{print $2}' |cut -d '/' -f 1` echo "$eth:$ip" >> /tmp/eth_ip.log done useage() { echo "Please useage: $0 -i 网卡名字 or $0 -I ip地址" } wrong_eth() { if ! grep -q "$1" /tmp/eth_ip.log then echo "请指定正确的网卡名字" exit fi } wrong_ip() { if ! grep -qw "$1" /tmp/eth_ip.log then echo "请指定正确的ip地址" exit fi } if [ $# -ne 2 ] then useage exit fi case $1 in -i) wrong_eth $2 grep $2 /tmp/eth_ip.log |awk -F ':' '{print $2}' ;; -I) wrong_ip $2 grep $2 /tmp/eth_ip.log |awk -F ':' '{print $1}' ;; *) useage exit esac
|